package com.demo.dao.mapper;

import com.demo.dao.mode.PersonInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface PersonMapper {

    List<PersonInfo> selectPerson();

    //查询一个有注册手机号信息的用户
    List<PersonInfo> selectPersonWithRegisterPhone();
    //如果当前person没有注册过，查找该用户手机号用来登录capp
    List<String> selectPhoneNumber(@Param("personId") String personId);

    //随机生成手机号
    String generateRandomPhone();

    /**
     * @Descripte 根据person id 查logininfo
     * @Author kane
     * @Date 2020.8.7
     */
    Login selectLoginInfo(@Param("personId") String personId);

    //insert lm.device表，每次都用新设备登录, device_code是设备的id号
    int insertLMDevice(@Param("device_code") String device_code);

    //查询新插入设备后，device表生成的主键id
    String selectLMDeviceId(@Param("device_code") String device_code);
    //查询当前personId在数据库中有多少条注册信息(a 状态)，将多余的update为n状态
    List<Register> selectPersonRegister(@Param("personId") String personId);

    //查看同一个手机号是否对应多个用户并且都是a状态的
    List<String> selectOnePhone2Person(@Param("phoneNumber") String phoneNumber);
    //如果存在一个手机号是否对应多个用户并且都是a状态的, update非指定personId的状态为n
    int updateLMPersonByPhone(@Param("phoneNumber") String phoneNumber, @Param("personId") String personId);

    //暂时：register和forgot password正在整改， 直接update登录信息规避无法登录问题
    int updateLMPersonPin(@Param("phoneNumber") String phoneNumber, @Param("dev_id") String dev_id, @Param("personId") String personId);


    //如果存在多条状态为a的注册信息，则update除了第一条之外的所有记录
    int updateLMPersonStatus(@Param("personId") String personId, @Param("per_id") String per_id);

    // 插入person和device表的关联关系
    int insertRelation(@Param("per_id") String per_id, @Param("dev_id") String dev_id);
    //查询用户的cuid用于insert用户
    String selectPersonCuid(@Param("personId") String personId);

    String selectPersonCuidHomer(@Param("personId") String personId);

    //如果新用户没有登陆过capp，需要insert一条数据
    int insertPerson(@Param("idCard") String idCard, @Param("phoneNumber") String phoneNumber, @Param("dev_id") String dev_id, @Param("personId") String personId, @Param("cuid") String cuid);

    PersonInfo selectPersonByIdCard(@Param("idCard") String idCard);

    PersonInfo selectPersonByPersonId(@Param("personId") String personId);

    //查看没有注册过的用户是否在lm_person表是否存在绑定关系-->
    //如果当前手机号Per_HcpERSONid为空走忘记密码然后绑定身份证流程，如果没有手机号信息走注册流程
    Map<String, Object> selectBindStatusByphoneNumber(@Param("phoneNumber") String phoneNumber);
}
